package com.doitedu.day02

/**
 * @Date 22.6.20
 * @Created by HANGGE
 * @Description
 */
object _02方法和函数转换 {



  def  opt(x:Int ,f:(Int)=>Int)={
    f(x)
  }

 val f =  (x:Int)=>{
    x*x
  }


  def  m(x:Int):Int ={
    x*x*x
  }
  // 使用方法的逻辑    将方法转换成函数   隐式
  // 方法和函数的基本使用功能一样
  val  ff: (Int) => Int = m _

  def main(args: Array[String]): Unit = {
    // 方法的参数中  第二个参数是函数
    // 传入的是一个方法 , 在底层有方法 到函数 的隐式转换
  /*  val res  = opt(3 ,m)
    println(res)
*/
  oo(23 ,Array("a" , "b" , "c" , "d"))
    mm(12,"a" , "b" , "c")

  }

  // 方法的可变参数
  /**
   * 可变参数  可变(一种数据类型)  在方法参数列表的最后定义
   * @param x
   * @param str
   */

  def  mm(x:Int , str:String*)={
    for (elem <- str) {
      println(str+"-"+x)
    }
  }
  // 使用集合替代可变参数
 val oo =  (x:Int,str:Array[String])=>{
    for (elem <- str) {
      println(str+"-"+x)
    }
  }




}
